本题来自力扣48. 旋转图像。难度:中等

题目要求把矩阵顺时针旋转90°。可以直接上手硬来,但是我捣鼓了好久不知道怎么弄,那么这时候想象一下之前遇到难题怎么办?把难题转换成已经见过的题然后解决。乘法不会做了可以把它转换成一堆加法,复杂吗?复杂!但是又不是自己算,是计算机算,所以也就不那么复杂了。
同理,顺时针旋转90°了不会做了想想看有没有什么相对简单的方法可以有相同的功效。

矩阵[1,2,3]顺时针旋转90°只需沿红线对称下来即可

矩阵[[1,2,3],[4,5,6]]除了沿红线对称还需要左右对称
[1,2,3]不需要左右对称是因为相当于它和它自己对称了
所以推出规律
顺时针旋转90°=沿(左上到右下)对角线对称+左右对称
那么,逆时针90°呢?
自然就是逆时针旋转90°=沿(右上到左下)对角线对称+左右对称
拿3x3的矩阵验证一下

验证成功
代码时刻
def rotate(self, matrix: List[List[int]]) -> None:
#对角线对称
for i in range(len(matrix)):
for j in range(i):
matrix[i][j], matrix[j][i]=matrix[j][i],matrix[i][j]
#左右对称
for i in matrix:
"""
i.reverse()
"""
for j in range(len(i)//2):
i[j],i[len(i)-j-1]=i[len(i)-j-1],i[j]
至于为什么这么for循环,我相信多看几遍就能明白,我解释了一遍用到了特殊字符和表情,但是它老是出错发不出来,数据库编码有点问题以后再改网站的这个bug吧。

可以想象有两个三角形,1和2它们对应的位置需要交换值,而对称轴上的值不动
如果实在想不明白,文章底下评论即可
单词数:64字符数:890